Operators&Funtions 使用说明¶
说明¶
KVSQL是一款SQL合约执行引擎,可以运行符合范围的SQL语句,目标支持了部分常见运算符以及函数功能。以及在区块链的特殊场景下,并非所有功能都能够正常使用,部分函数被KVSQL限制以保障SQL智能合约执行的沙箱环境的安全。
限制功能主要包括如下:
- 随机数
- 部分浮点数函数
Operators¶
| Name | Description |
|---|---|
| & | Bitwise AND |
| > | Greater than operator |
| >> | Right shift |
| >= | Greater than or equal operator |
| < | Less than operator |
| <>,!= | Not equal operator |
| << | Left shift |
| <= | Less than or equal operator |
| <=> | NULL-safe equal to operator |
| %,MOD | Modulo operator |
| * | Multiplication operator |
| Addition operator | |
| Minus operator | |
| Change the sign of the argument | |
| / | Division operator |
| = | Assign a value (as part of aSETstatement, or as part of theSETclause in aUPDATEstatement) |
| = | Equal operator |
| ^ | Bitwise XOR |
| AND, && | Logical AND |
| BETWEEN … AND … | Whether a value is within a range of values |
| BINARY | Cast a string to a binary string |
| CASE | Case operator |
| DIV | Integer division |
| IN() | Whether a value is within a set of values |
| IS | Test a value against a boolean |
| IS NOT | Test a value against a boolean |
| IS NOT NULL | NOT NULL value test |
| IS NULL | NULL value test |
| LIKE | Simple pattern matching |
| NOT,! | Negates value |
| NOT BETWEEN … AND … | Whether a value is not within a range of values |
| NOT IN() | Whether a value is not within a set of values |
| NOT LIKE | Negation of simple pattern matching |
| NOT REGEXP | Negation of REGEXP |
| OR, | |
| REGEXP | Whether string matches regular expression |
| RLIKE | Whether string matches regular expression |
| XOR | Logical XOR |
| ~ | Bitwise inversion |
Flow Control Functions¶
| Name | Description |
|---|---|
| CASE | Case operator |
| IF() | If/else construct |
| IFNULL() | Null if/else construct |
| NULLIF() | Return NULL if expr1 = expr2 |
CASE value WHEN compare_value THEN result [WHEN compare_value THEN result …] [ELSE result] END
需要注意的是,以上四种语句中的结果表达式的类型不同时,会将所有的表达式返回类型统一。这一点与mySQL存在差异。
Numeric Functions and Operators¶
| Name | Description |
|---|---|
| %,MOD | Modulo operator |
| * | Multiplication operator |
| Addition operator | |
| Minus operator | |
| Change the sign of the argument | |
| / | Division operator |
| ABS() | Return the absolute value |
| CEIL() | Return the smallest integer value not less than the argument |
| CEILING() | Return the smallest integer value not less than the argument |
| CONV() | Convert numbers between different number bases |
| CRC32() | Compute a cyclic redundancy check value |
| DEGREES() | Convert radians to degrees |
| DIV | Integer division |
| FLOOR() | Return the largest integer value not greater than the argument |
| MOD() | Return the remainder |
| PI() | Return the value of pi |
| RADIANS() | Return argument converted to radians |
| ROUND() | Round the argument |
| SIGN() | Return the sign of the argument |
| SQRT() | Return the square root of the argument |
| TRUNCATE() | Truncate to specified number of decimal places |
Date and Time Functions¶
| Name | Description |
|---|---|
| CURDATE() | Return the current date |
| CURRENT_DATE(),CURRENT_DATE | Synonyms for CURDATE() |
| CURRENT_TIME(),CURRENT_TIME | Synonyms for CURTIME() |
| CURRE NT_TIMESTAMP(),CURRENT_TIMESTAMP | Synonyms for NOW() |
| CURTIME() | Return the current time |
| UTC_DATE() | Return the current UTC date |
| UTC_TIME() | Return the current UTC time |
| UTC_TIMESTAMP() | Return the current UTC date and time |
String Functions and Operators¶
| Name | Description |
|---|---|
| CONCAT() | Return concatenated string |
| FORMAT() | Return a number formatted to specified number of decimal places |
| LIKE | Simple pattern matching |
| LOWER() | Return the argument in lowercase |
| NOT LIKE | Negation of simple pattern matching |
| NOT REGEXP | Negation of REGEXP |
| REGEXP | Whether string matches regular expression |
| RLIKE | Whether string matches regular expression |
| TRIM() | Remove leading and trailing spaces |
| UPPER() | Convert to uppercase |
Cast Functions and Operators¶
不支持json类型的转换与被转换;不支持指定字符集
| Name | Description |
|---|---|
| BINARY | Cast a string to a binary string |
| CAST() | Cast a value as a certain type |
| CONVERT() | Cast a value as a certain type |
Bit Functions and Operators¶
| Name | Description |
|---|---|
| & | Bitwise AND |
| >> | Right shift |
| << | Left shift |
| ^ | Bitwise XOR |
| BIT_COUNT() | Return the number of bits that are set |
| ~ | Bitwise inversion |
Aggregate Functions¶
| Name | Description |
|---|---|
| AVG() | Return the average value of the argument |
| BIT_AND() | Return bitwise AND |
| BIT_OR() | Return bitwise OR |
| BIT_XOR() | Return bitwise XOR |
| COUNT() | Return a count of the number of rows returned |
| COUNT(DISTINCT) | Return the count of a number of different values |
| GROUP_CONCAT() | Return a concatenated string |
| MAX() | Return the maximum value |
| MIN() | Return the minimum value |
| STDDEV_POP() | Return the population standard deviation |
| STDDEV_SAMP() | Return the sample standard deviation |
| SUM() | Return the sum |
| VAR_POP() | Return the population standard variance |
| VAR_SAMP() | Return the sample variance |